React Nativeの開発時にyarn webをしたらERR_OSSL_EVP_UNSUPPORTEDが出た
エラーの発生経緯
code:package.json
{
"name": "(リポジトリ名)",
"version": "1.0.0",
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web"
},
"dependencies": {
"@expo/webpack-config": "^0.17.2",
"cross-env": "^7.0.3",
"expo": "~47.0.9",
"expo-status-bar": "~1.4.2",
"react": "18.1.0",
"react-dom": "18.1.0",
"react-native": "0.70.5",
"react-native-web": "~0.18.9"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@types/react": "~18.0.14",
"@types/react-native": "~0.70.6",
"typescript": "^4.6.3"
},
"private": true
}
code:error(js)
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
原因
If you hit an ERR_OSSL_EVP_UNSUPPORTED error in your application with Node.js 17, it’s likely that your application or a module you’re using is attempting to use an algorithm or key size which is no longer allowed by default with OpenSSL 3.0. A command-line option, --openssl-legacy-provider, has been added to revert to the legacy provider as a temporary workaround for these tightened restrictions.
Node.js 17を使用したアプリケーションでERR_OSSL_EVP_UNSUPPORTEDエラーに遭遇した場合は、そのアプリケーションやモジュールがOpenSSL 3.0では既に許可されていないアルゴリズムやキーサイズを使用しようとした可能性があります。旧来の仕様に戻し、それらの制限を一時的に回避できるようにするために、コマンドラインオプションの--openssl-legacy-providerが追加されました。
回避策
いくつかのサイトではexportコマンドを使用して回避する方法が紹介されているが、Windowsでは使えないのでここでは別の方法を紹介する $ yarn add cross-env
3. "scripts"内の"web"の値を以下のように書き換える
書き換え前:"expo start --web"
書き換え後:"cross-env NODE_OPTIONS=--openssl-legacy-provider expo start --web"
意訳:このオプション使えねぇよ
素直に最新版にアップグレードするしかない
参考